【iOSDC Japan 2023 レポート】「一般的な通信でも使えるバックグランドURLSessionの活用方法」を聞いてきた。
はじめに
年に一度のiOSエンジニアの為のお祭り iOSDC Japan 2023に参加しています。
せっかくなので、参加したセッションのレポートを書きたいと思います。
一般的な通信でも使えるバックグランドURLSessionの活用方法
登壇者
- Li Jierongさん
概要
バックグランドURLSessionとは、アプリがバックグランドに行っても、終了されても、別プロセスでデータ通信が可能なURLSessionです。
バックグランドで長時間ダウンロードする必要がある時のみ使われるイメージはありますが、アプリやWidgetに必要な情報の先読み、バックグランドに行ったことによるタイムアウトの回避にも使えます。
Date taskがサポートされず、upload taskかdownload taskを使う必要があるので、使い方は少し特殊ですが、一度対応しておけば普通のURLSessionと同じ使い勝手になるので、バックグランドURLSessionを一般的な通信で使ってみませんか。
本トークでは、以下のトピックについて紹介します。
- バックグランドURLSessionとは
- メリットと活用方法
- 実装の具体例
- 使用上の注意事項
引用: fortee
資料
感想
どのようなことに使用できるのか説明されたセッションでした。バックグラウンドURLSessionを使ったことがなかったので勉強になりました。
URLSessionConfigurationでは、三つの種類がある。
- default
- ephemeral
- background
background
を選択した場合、アプリとは別プロセスで実行される。
URLSessionでは一時停止した後、戻ってきても再開されるがタイムアウトエラーになることもあるが、その問題も解決してくれる。
アプリと同じプロセスで実行されるSessionConfigurationの場合、
- アプリがバックグラウンドになるとアプリのプロセスと共に一時停止状態になる
- フォアグラウンドに戻っても、タイムアウトによるエラーが発生する
- メモリ不足が原因でバックグラウンドにあるアプリが終了された場合、中止する
上記の状態になるが、background
を選択した場合にはどれも解決することが出来る。
また、バックグラウンドURLSessionを活用したいけど、使い勝手が悪いと感じる人の対応策も記載いただいき、
- SwiftUI
- UIKit
- WidgetExtension
での、実装例も共有いただけました。
バックグラウンドURL Sessionは別プロセスで実行される為、オーバーヘッドに注意する必要があるとのことで、大きいデータ通信時のみに使用するなど限定的な利用を推奨されていました。
おわりに
もし、実装する機会があれば、「あの時聞いたやつだ!」と明るい気持ちで取り組めそうです。
iOSDC 2023 レポート関連
Day 0
- 「タクシーアプリの多言語対応・ローカライズにおける課題と解決策」を聞いてきた。
- 「Appleにおけるプライバシーの全容を把握する」を聞いてきた。
- 「SwiftUIの進化についていくためにやったこと」を聞いてきた。
- 「SharePlayの歴史と進化 - そしてvisionOSへ」を聞いてきた。
- 「UIKit ベースの Custom UIContentConfiguration API を用いた複雑なカスタムセルの作り方」を聞いてきた。
Day1
- 「TextKit 2 時代の iOS のキーボードとテキスト入力と表示のすべて」を聞いてきた。
- 「PushToTalkで作るトランシーバー」を聞いてきた。
- 「6年間運用したiOSアプリのリアーキテクトについて具体的に解説」を聞いてきた。
- 「Mastering SwiftSyntax」を聞いてきた。
- 「配信アプリのためのリアルタイムプッシュ通知ぼかしの夢 〜低負荷で高速なプライバシー保護を目指して」を聞いてきた。
- 「macOSで自分のカメラを作ってみよう – Core Media IO Extension」を聞いてきた。
- 「なぜ、弊社はFlutterを捨ててネイティブ化(Swift / Kotlin)にコミットしたのか」を聞いてきた。
- 基礎から理解する!来年春までに対応すべきプライバシーの変更点
- 「正規表現を”微分”する!?爆速で自作できる正規表現エンジン」を聞いてきた。